/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerEditorial;
import AccesoDatos.Persistencia.Manager.ManagerInformes;
import GUI.Bibliotecario.AdminEditoriales.PanelActualizarEditorial;
import LogicaNegocio.Biblioteca.Editorial;
import LogicaNegocio.Validacion.VBiblioteca;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 * Esta clase en java permite el control de eventos
 * para el registro de editoriales en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlActualizarEditorial.java
 * @version 1.0
 * Fecha: mar may 11 10:51:37 COT 2010
 */



public class ControlActualizarEditorial {

    //Atributos de clase
    private  PanelActualizarEditorial panelActualizar;
    private ManagerEditorial gestorEditorial;
    private ManagerInformes gestorInformes;
    private Editorial editorial;
    private boolean mostrada;


    public ControlActualizarEditorial(PanelActualizarEditorial panelActualizar) {
        this.panelActualizar = panelActualizar;
        gestorEditorial = new ManagerEditorial();
        gestorInformes = new ManagerInformes();
        mostrada = false;
    }

    public void actualizar() {
        try {
            editorial = new Editorial();
            int codigoEditorial = Integer.parseInt(panelActualizar.textFieldCodigo.getText());
            editorial.setCodigoEditorial(Integer.parseInt(panelActualizar.textFieldCodigoNuevo.getText()));
            editorial.setNombre(panelActualizar.textFieldNombreNuevo.getText());
            editorial.setPaginaWeb(panelActualizar.textFieldPaginaNueva.getText());
            editorial.setPais(panelActualizar.textFieldPaisNuevo.getText());
            new VBiblioteca(editorial);
            gestorEditorial.actualizarEditorial(codigoEditorial, editorial);
            limpiar();
            JOptionPane.showMessageDialog(panelActualizar, "La editorial ha sido actualizada con exito", "Actualizar", JOptionPane.PLAIN_MESSAGE);
        } catch(NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelActualizar, "El codigo de editorial solo permite caracteres numericos", "Error Codigo", JOptionPane.ERROR_MESSAGE);
        } catch (VBiblioteca ex) {
            JOptionPane.showMessageDialog(panelActualizar, ex.getMessage(), "Error Datos", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    private int obtenerCodigoEditorial() {
        int codigoEditorial = -1;
        int fila = panelActualizar.tableEditoriales.getSelectedRow();
        if(fila != -1){
            codigoEditorial = Integer.parseInt(panelActualizar.tableEditoriales.getValueAt(fila, 0).toString());
        }
        return codigoEditorial;
    }

    public void mostrarDatosEditorial() {
        Editorial editoriales;
        int codigoEditorial = -1;
        int fila = panelActualizar.tableEditoriales.getSelectedRow();
        if(fila != -1){
            codigoEditorial = obtenerCodigoEditorial();
            editoriales = gestorEditorial.obtenerEditorial(codigoEditorial);
            panelActualizar.textFieldCodigo.setText(editoriales.getCodigoEditorial()+"");
            panelActualizar.textFieldCodigoNuevo.setText(editoriales.getCodigoEditorial()+"");
            panelActualizar.textFieldNombre.setText(editoriales.getNombre());
            panelActualizar.textFieldNombreNuevo.setText(editoriales.getNombre());
            panelActualizar.textFieldPagina.setText(editoriales.getPaginaWeb());
            panelActualizar.textFieldPaginaNueva.setText(editoriales.getPaginaWeb());
            panelActualizar.textFieldPais.setText(editoriales.getPais());
            panelActualizar.textFieldPaisNuevo.setText(editoriales.getPais());
            mostrada = true;
        }
    }

    public void actualizarTabla() {
        List<Editorial> listaAreas = new ArrayList<Editorial>();
        listaAreas = gestorInformes.obtenerListaEditoriales();
        Editorial editoriales;
        for(int i = 0; i < listaAreas.size(); i++){
            if(panelActualizar.tableEditoriales.getRowCount() <= i){
                DefaultTableModel tmp = (DefaultTableModel)panelActualizar.tableEditoriales.getModel();
                Object fila[] = {"",""};
                tmp.addRow(fila);
            }
            editoriales = listaAreas.get(i);
            panelActualizar.tableEditoriales.setValueAt(editoriales.getCodigoEditorial(), i, 0);
            panelActualizar.tableEditoriales.setValueAt(editoriales.getNombre(), i, 1);
        }
    }

    private void limpiar() {
        panelActualizar.textFieldCodigo.setText("");
        panelActualizar.textFieldCodigoNuevo.setText("");
        panelActualizar.textFieldNombre.setText("");
        panelActualizar.textFieldNombreNuevo.setText("");
        panelActualizar.textFieldPagina.setText("");
        panelActualizar.textFieldPaginaNueva.setText("");
        panelActualizar.textFieldPais.setText("");
        panelActualizar.textFieldPaisNuevo.setText("");
        mostrada = false;
    }
}
